How to create custom remote upgrade
How to Create Custom Remote Controls and use them on your Slingbox ' Written by: Al Richey With acknowledgements to Matt Whitlock, BrandonC, The Robman, Nuke12 and AndyBBB, who actually wrote much of this article. All I did was update and combine all the information into one document. 'Background information One of the most common posts on the support site is about remote codes for unsupported devices. So if you find yourself in this situation I hope this will help. Before detailing the steps to go through there are some basic things you need to understand (this isn‟t essential reading but everything will make much more sense if you do know the details) 'Different UEI Chips' : There were five different chips used in Slingboxes. These are designated as JU, PK, PL, RV & JB. If you want to check your type you can verify your IR blaster version in the Slingbox Properties dialog. Then match the version number with the chip type. #JU (old US boxes) #PL (current non-HD US boxes) #PK (never used) #RV (current non-US boxes) #JB (Slingbox Pro-HD) (Compatible with PL files) 'Slingplayer Compatibility' : In older versions of Slingplayer it was possible to change the look of the Custom Remote skin‟. Since Slingplayer V1.5 this functionality has been removed and as far as the look of the Remote is concerned you are stuck with the Generic design produced by Sling Media. All we can do is change the codes that are sent when a specific button is pressed. One drawback of the Generic Remote is that it has only the main buttons, so extra buttons on other remotes (such as Audio/Setup…) can not be mapped directly. What we have to do is put them into a Custom Menu which is accessed by tapping on the Menu button on the Generic Remote. : 'Setup Code Nomenclature' : You cannot install Custom Remotes using the Web-based player so this article assumes you have installed the latest version of Slingplayer and are running Setup Assistant. When you run the „Configure Video Sources‟ routine in Slingplayer and select a supported device, what actually happens is that a Binary Code is downloaded to the Slingbox. : This Binary Code details the IR codes that are sent when a specific button is pressed on the remote. Unfortunately the native Slingbox software doesn't use separate binary files that we can edit, their codes are apparently compressed and packaged into special files that we can't do anything with (that I know of). But what we can do instead of editing the built-in codes is to use a separate external upgrade code file. These files have the format such as "C1234_PL.BIN". : The first letter of the file describes the type of device, the main ones we are interested in are: ::V which is for VCRs, which encompasses PVRs, DVRs and other recorders ::S which is for Satellite and FTA set top boxes ::C which is for Cable boxes ::Y which is for DVD Players ::R which is for Tuners :This is followed by a 4-digit code number. For Slingboxes the code numbers can be between 0000-2047 (actually higher in newer Slingboxes but to stay safe we are better staying below 2047). In general, codes below 2000 actually relate to specific boxes, for example V0618 is the code for a TIVO and D0032 is the code for a Pioneer CD Player. But we can feel fairly safe using 2000-2047 for our own codes. The final part of the filename defines the chip for which it will run. : So if you were looking for the binary file for a PVR with a code number allocated 1234, designed to run on a PL-equipped Slingbox, you would be searching for a file called V1234_PL.BIN. Note: You must NEVER change the name of the file, as the letter, code number and chip type are also defined inside the file itself. 'JP1' :You will hear a lot about "JP1". Basically this is a process whereby people using "One For All‟ (OFA) remote controls can add new codes to their remotes from their PC. The remote control processor inside the Slingbox is made by the same company that makes OFA remotes, so the upgrades are similar. The JP1 tools have been upgraded so that we can now use them to create and modify upgrades for the Slingbox. 'The Basic Procedure.' The official procedure to follow is to report the Lack of a Supported Remote to SlingMedia and they will add it to the database. In practice, they are not quick at doing this (I have been asking for a remote for over 2 years now), and the updated remote list seems to be only occasionally updated. That may change in the future but for now it is really not a practical quick solution. So for a short term fix what you need to do is to create or acquire the correct Binary code file for your A/V device, and then install it into your Slingbox. This installation process is covered in detail in Section 4, so first let‟s see where you can look for these files. 'Obtaining the Binary file for the Custom Remote' #Before starting, make sure in the setup wizard you have tried all the devices by that same manufacturer, even if the model number does not match, and all the associated code numbers. You might be lucky and find one that works and that will save a lot of work. If that doesn‟t solve the problem here is the step by step approach to getting hold of your binary file: #Go to the JP1 forum. This has a specific Download area for Slingbox Custom Remotes here, so go through all those to see if your device has already been done. #If it isn‟t there the JP1 forum also has a more general File Download area here. From this page you select the download area for the specific type of device and check there. If you are lucky you will find a source file for using in the program RemoteMaster (RM or KM files), the use of which is discussed in Section 6. #Have a look on the Hava forums. They are also using the same chips and the files might be there. Check out this forum. You‟re looking for a PK or PL file. They can be imported into Remote Master and then converted to the PK, PL, RV or JU files for the Slingbox. Again this is discussed in Section 6. #Find a friend with a Pronto remote. They have a very nice update system and can generate .ccf files that can be used with the tools on the JP1 site to generate the .bin file used by a Slingbox. However, this is not easy, and you will probably need help from the experts on the JP1 forum, but if you want to have a go on your own then you will need the DecodeCCF program, which is available here, and .ccf files can be found here. Note that the Pronto can also make .pcf files, but unfortunately we cannot decode those. If all of this fails, and you cannot get hold of a BIN file then the Remote will have to be built from scratch. You have 2 options here: #Do it yourself by buying a JP1.x learning remote plus a JP1.x cable, or an IR Widget, and learn the codes needed to control the device. How to do this is covered in Section 5 & Section 6. #Ask someone else to do the work for you. You can try this by posting a request for help in either: ##The Slingbox Answers Forum. ##The JP1 forum. I can normally install your device on my Harmony Universal Remote to mimic the original Remote and learn the codes for you (unless I am away on holiday). 'Installing the Binary file to the Slingbox.' But let‟s assume you have been lucky and found the set of Binary files you need. You should have 4 files of the format: :C2010_JU.BIN :C2010_PK.BIN :C2010_PL.BIN :C2010_RV.BIN So let‟s use those codes/files as an example. If you only have a single file and it is of the wrong chip type, then you can use RemoteMaster to produce the correct file. See Section 6 for instructions on how to do it. #Put ALL the binary files in the: #*PC: C:\Program Files\Slingmedia\SlingPlayer\SBAV\ folder on your PC #*MAC: /Applications/SlingPlayer/Contents/Slingbox Setup Assistant/Contents/Resources/SBAV/ #Then run the "Configure Video Sources" in Setup Assistant (Slingplayer V2.0). Instead of specifying an actual device, you enter „Other‟ for the Manufacturer and the Model (actually I think you can specify the actual manufacturer, but as far as I know it doesn't give any benefit) and then input the letter and code number for the binary file you have obtained. Let‟s take a detailed look at the procedure: #Having specified the type of device and selected "Other" for Manufacturer and Model, and possibly having to go through a page setting up your Cable/Satellite line up (depends on your country), you will get this page: #Select the "Custom" option (you may need to scroll down if there are more than 4 standard codes) and when the new "Enter Custom Code" box appears type in the Letter and the 4-digit code for the file (C2010 for the example set of files above if you have an RV chip). Then Tap the power button. One of three things will happen: ##Your device will turn on/off and you will move to the next screen. ##The device will not power on/off, in which case just ignore it and carry on to see if any of the other keys work (Some devices, such as Comcast Cable boxes do not actually have a power On/Off option). ##You get the following error messageIn this case, make sure you have actually put the files in the \SBAV\ folder as the program is not finding them. #You should now have a working remote when you connect to the Slingbox. Remember you are stuck with the Generic Remote skin, but experiment with the Custom Menu options (tap the Menu button on the Remote) and see what extra functions have been added. 'Learning the IR codes from your own remote.' Assuming you have decided to create the Remote Binary File yourself, the first stage is to learn the codes from your original Remote. This is what you need: Hardware #A computer with a USB port (or you can use older serial ports). #A Learning Remote and an appropriate JP Cable. Almost any "One For All" or "Radio Shack" remote that has learning will work for this but examples are: ::URC-6820 (JP1.2) ::URC-8820 (JP1.2) ::URC-10820 (JP1.2) ::Radio Shack Gamer 15-133 (JP1.3) ::Radios Shack Satelite15-134 (JP1.3) :Note that some remotes need a JP1.2 cable and some need a JP1.3 cable (and some older, discontinued remotes such as the URC-9810 use a JP1 cable). Make sure the Cable and Remote match. Again the JP1 forum is a mine of information. :If you are not sure there is a chart of remotes where you can look up a specific remote to see which format it uses here. If you want to buy a cable have a look at Tommy Tyler's store, or alternatively try DIYgadget for the cheaper serial JP1.2/3 cables. An IR learning "widget". I got mine from Tommy Tyler‟s store (My preferred solution). Software :If you are using a Learning Remote: IR.EXE RDF Files These are support files for the IR.EXE program. If you are using an IR Widget: IRSCOPE.EXE The drivers The IR decode DLL Or download my full IRSCOPE/REMOTEMASTER package from here. Much of the JP1 software needs the java runtime environment (JRE) as well. A lot of computers will already have it installed already, but if you need it you can download it. Now we can learn the codes. First we will cover the procedure using a Learning Remote, then cover it using an IR Widget. USING A LEARNING REMOTE Step 1 – Getting the Codes from your Remote (These steps are based on using the older URC9810, the procedure will be slightly different for other Remotes so you will need to refer to the manuals.) :# Tap one of the buttons on the Learning Remote at the top which applies to the device you wish to create the bin file for. (eg. TV, DVD, Satellite). This is not totally necessary, you can always use TV, as it makes no difference to you, but if you subsequently upload the file for other users, it really ought to be for the correct type of device. :# At the bottom there will be a button called 'Set'. Keep your finger pushed on that until the LCD changes so you can modify your remote control. :# Click down until you come to an option called 'IR LEARN' and click select. :# Click one of the buttons on the remote control. For example, the '1' key, the LCD will say „Learning‟ and the red light will come on. :# Put your remote control in front of the learning remote and click the 1 key - if it is added correctly it should say 'Success'. If it fails (shows “Error”) then try again. There are a lot of different techniques for this procedure, the safest bet seems to be press the button on the Learning Remote, wait for 2 seconds then hold the equivalent key on the original Remote until the red light goes on. If you get a bad „learn‟, try just tapping quickly on the original key. A full description of these options is here. :# Repeat this step for each of the keys you want to learn and have on your Slingbox Remote. If you get the „Memory Full‟ message then you will have to repeat this operation for the remaining keys after you have uploaded the first set of codes to your PC. Step 2 – Getting the Codes onto your PC. :#Install IR.EXE onto your PC. It comes as a ZIP file rather than an installation package, which you need to unzip to your PC. The files can actually go anywhere but as a bit of tidy person (geek?) I created a C:\Program Files\IR\ folder and put the files in there and then created a shortcut on the Desktop. Important Note: For Windows VISTA users, I have found that I need to run the program in Windows XP Compatibility Mode to make it recognise the JP1 interface. Just right-click on IR.EXE, select Properties, then the Compatibility Tab and check the appropriate box. :#Create a sub folder called \RDF\ in whatever folder you have put the IR program and extract the RDF support files into that folder. :#Get your JP1 cable out and turn your remote control over, open the battery compartment and plug the JP1 6 pin connector into the Learning remote (you will see 6 needles where it plugs into). There are 2 ways to plug it in, but don‟t worry, you won‟t cause any damage by plugging it in the wrong way. Try them both if the first one fails. :#Plug the USB plug into your computer. As with any external piece of hardware you will need to install the drivers. There are drivers for the JP1 Remotes and the JP1.2/3 Remotes. Personally I use the JP1 ones dated 12 Feb 2008 and they work fine in Windows XP and also in Vista as long as the Windows XP Compatibility flag is set. :#Now open IR.exe. If you get told your RDF directory isn't valid, click OK and ignore this for now. It will look something like this: (Note this is a screenshot of V8.0. If that version hasn‟t been released yet, V7.15 looks very similar but does not have the icons at the top. :#Go to File > Set Directory > RDF Path >. Select your RDF directory. You need to double click the RDF directory or it won't take. :#For peace of mind go to Interface > Check Driver... it should say the interface is connected. If it does then that's fine, if it gives an error message “Unable to open device, check connection” then it is not seeing the JP1 cable so you need to check the cable and the drivers. If it gives the error message “The remote is not acknowledging signals from the interface” then the cable is working fine but it is not seeing the remote. Try reversing the cable connection to the remote and hopefully that will cure the problem. :#Now click the "Download From Remote" button. :#Then click the "Learned Signals" tab (second from last one). It will look something like this: :#On the left hand side there should be a list with the device type and the keys - eg "TV: 1". Click on it and details should show up in the right hand side listview. :#The first thing we need to make a note of is the Protocol (JVC) in this case, then the Device Number (239 in this case) and if it is displayed, the Sub-Device number. Then for each of the learned keys note down the OBC, Hex Code and EFC numbers. :#If you get the "MEM FULL" message on the Remote then Use File > Save As to keep a copy then tap the "Delete All" button, go back to the General Tab and tap the "Upload To remote" button to clear the Remote. Then learn the remaining buttons and follow the same procedure. Once they are all done, use the use the File > Save As command to save a copy of the final results. However, if you see a screen like this, it means that the protocol used by your remote is not recognised by the system. That means that you cannot create the Remote yourself but will have to ask the people on the JP1 forum to help you out. They have a much deeper understanding of the IR formats, and can often dig deeper into the signals and figure out the codes. The procedure to do this is to use the File > Save As menu option to save the IR source file(s) (I tend to ZIP them up if there are more than one). Now upload them to the Diagnosis Area in the File Section of the JP1 Forum. Check the file has been added, and make a record of it‟s location by right-clicking on it and select „Copy Link Location‟. Now create a new topic in the Protocol Decode Forum and plead for some help, quoting the device Manufacturer and Model Number and the link to the IR source files. Offer incentives (money, beer, everlasting gratitude….) and you might be lucky. The experts may produce the RemoteMaster source file or even the Remote Binary files themselves. Now you can move on to Section 6 for building the Remote BIN files. USING AN IR WIDGET If you are using an IR Widget there is an excellent User Guide on the JP1 Forum. So I suggest you download that and read it thoroughly. There is no point in repeating it here, but just to emphasise a few points: :#You will want to regularly check for updates to the decodeir.dll. As new protocols are recognized, this dll will change. :#There is no way to save the learned values so you will need to write them down. :#Although I tend to put programs into C:\Program Files\.... this can be a bit dodgy in Windows Vista as programs cannot save files to this area because of security limitations. So it might be safer to install it under \Documents\ :#The Guide has a very useful section comparing using a Learning Remotes and the IR Widget and highlighting the differences, (For example "Key" is equivalent to "OBC") so you could check out the previous sub-section covering using IR.EXE and the Learning Remote. And then you will understand this section. When complete you can move onto Section 5 to create the Binary file. 'Creating your own Binary files using RemoteMaster' :#To make life easier I have packaged a full set of the latest files required and uploaded them to my site. Just download them from here and unzip them onto your computer. :#Start RemoteMaster.EXE. You may be promoted to highlight the folder the folder that contains the RDF files (Highlight the \RDF\ folder in the folder where you placed Remotemaster). You may also have to do the same for the Images folder. The display will now look something like this: :#If you have obtained an .rmdu file then use the File > Open menu option to load the file. If you have obtained a .bin file then use the Advanced > Import Binary Upgrade to load up the details. If you have not obtained a file then you will have to input the codes manually. :#Now to explain the main Setup Tab: Description ''': Use anything you like, I tend to use the device name. '''Remote: Select the one appropriate for your chip. Device Type: Should be set to the correct type of device (as covered in Paragraph 3 of Section 1). Setup Code: This is where you put the 4-digit code. In theory it can be any number between 0000 and 2047, but as explained in Section 1 Paragraph 3, numbers below 2000 may actually be already allocated to specific devices, so to be safe I personally use 2010. Fell free to use your own value. Protocol: From the dropdown list select the Protocol you discovered when you used IR.EXE/IRSCOPE.EXE. Device: Type in the Device code you recorded from IR.EXE/IRSCOPE.EXE. Sub-Device: If applicable type in the Sub-Device code you recorded from IR.EXE/ IRSCOPE.EXE. :#Now tap on the Functions Tab This picture shows the program with an .rmdu file or .bin file already imported; otherwise the code columns will be blank. The entries are fully configurable, so if there are pre-defined functions that you do not need (pip swap, pipmove..) then you highlight them and tap the "Delete" button. If you have a function that is not pre-defined (Audio, Setup…) then tap the "New" button and enter them. Now fill in the codes for each button that you recorded. You just put in the OBC value and press , the other 2 values will be generated automatically based on the protocol you selected. Also, if you used a JP1 learning remote, there's a way to cut and paste all the codes which saves needing to enter them all. In IR, if you select File > Summary you get a page listing lots of stuff. If you scroll down, you'll see a list of learn decodes. You can cut and paste this list into Excel, then you can re-arrange the columns and just select the button names and OBC codes to cut and paste into RM. You can move the RM columns, so if the OBC column isn't the one next to the button names, you can move it there. :#Now tap on the Buttons Tab This is where you map the defined functions onto the available buttons. Simply tap the Auto-Assign button which should allocate most of the buttons. For any buttons left in red drag the function name from the table on the left to the function column on the right. But note that not all these buttons are available on a Slingplayer Generic Remote. For example the 'Slow' and 'Eject' buttons do not exist on a Generic Remote. So only map the functions onto the buttons that actually exist (You will see that when you check out the Layout Tab, and from experience when you have done this a few times). The important ones to note are the Custom 10-29 buttons. These are the ones you use for the functions you need that aren't on the generic remote and they subsequently appear in the drop down menu of the remote as Custom options (except for Custom 22-26 which are pre-allocated to the colour buttons). :#Now tap on the Layout Tab. This shows the generic Slingplayer remote and shows the buttons you can actually use in the Buttons Tab. If a button shows yellow then that means it is in use. If it shows black (the PgUp/PgDn in the picture) then has not been allocated a function. Again you can drag and drop functions onto a button. :#Once you have finished experimenting go back to the Setup tab. Select the appropriate Slingbox remote, go to the 'Advanced' menu at the top and select 'Export Binary Upgrade'. This will produce the BIN file that we have discussed in previous Sections. If you aren‟t sure which Slingbox Chip you have then create a BIN file for each of the 4 different chips, so that would give you something like :::C2010_JU.BIN :::C2010_PK.BIN :::C2010_PL.BIN :::C2010_RV.BIN So now you can go back to Section 4 and install the new Custom Remote onto your Slingbox. Finding Missing Codes You can often find yourself in the position where the Custom Remote generally works OK but some of the functions are missing or some are sending the wrong code. This is relatively easy to fix by trial and error. The OBC codes must lie between 0-255, so the first thing to do is make a list of the OBC codes that are not being used in the Remote Control. Now use Remotemaster to allocate those codes to the 0-9 buttons and the 15 Custom buttons. Now build a new BIN files, replace the one in your \SBAV\ folder and rerun the "Setup Video Sources" routine. Now try those buttons and see if any of them action the missing function. If you find the missing codes then you can update the original remote file. You may have to repeat this operation 10 times to cover all the missing codes, although you can cut down the number of times by also using the Transport buttons (Play/Pause…) and Channel, Page +/- buttons as well. 'Give your Binary file back to the Community' Finally, remember that it is good to payback. If you find a remote file that works for you then upload it to the JP1 Forums. The way to do this is: #Put the 4 Binary files and the Remote Master RMDU file into a ZIP file. I also tend to add a Readme file in case users are unsure how to use the files. Although hopefully they will have read this article and will know what to do. #To be really helpful, you should upload your files in 3 different places: ##Upload your ZIP file to the Slingbox Binary Files area. ##Upload the Remote Master RMDU source file to the Slingbox RM Files area. ##Upload the RMDU file to the appropriate area in the Device Upgrades area. I hope these instructions have been helpful. If you have any suggestions for changes or improvements please E-mail me at alan@rmrsoft.com.